package cn.tedu.hotel.mapper;

import cn.tedu.hotel.pojo.entity.Customer;
import cn.tedu.hotel.pojo.vo.CustomerListItemVO;
import cn.tedu.hotel.pojo.vo.CustomerStandardVO;
import org.apache.ibatis.annotations.Param;
import org.springframework.stereotype.Repository;
import sun.security.util.math.ImmutableIntegerModuloP;

import java.util.List;

/**
 *  客户数据相关的mapper接口
 */
@Repository
public interface CustomerMapper {

    /**
     *  插入客户数据
     * @param customer
     * @return
     */
    int insert(Customer customer);

    /**
     *  删除客户
     * @param id
     * @return
     */
    int deleteById(Long id);

    /**
     *  修改客户信息
     * @param customer
     * @return
     */
    int update(Customer customer);

    /**
     *  根据id查询客户信息
     * @param id
     * @return
     */
    CustomerStandardVO getStandardById(Long id);

    /**
     *  根据证件号码或手机号查询客户信息
     * @param idNumber
     * @param phone
     * @return
     */
    CustomerStandardVO getStandardByIdNumberOrPhone( @Param("idNumber") String idNumber,
                                                     @Param("phone") String phone);

    /**
     * 根据用户id，或客户编号，或客户姓名，或客户证件号，或客户手机号查询客户详细信息
     *
     * @param id
     * @param userNumber
     * @param userName
     * @param idNumber
     * @param phone
     * @param isDelete
     * @return
     */
    CustomerStandardVO getStandardCustomer(@Param("id") Long id,
                                       @Param("userNumber") String userNumber,
                                       @Param("userName") String userName,
                                       @Param("idNumber") String idNumber,
                                       @Param("phone") String phone,
                                       @Param("isDelete") Integer isDelete);


    /**
     *  查询客户列表
     * @return
     */
    List<CustomerListItemVO> listCustomers(@Param("id") Long id,
                                           @Param("userNumber") String userNumber,
                                           @Param("userName") String userName,
                                           @Param("idNumber") String idNumber,
                                           @Param("phone") String phone,
                                           @Param("isDelete") Integer isDelete);




}
